package com.neusoft.ch4;

/*
 * 课堂笔记：
 * 数组：
 *     一组类型相同的、连续存储的数；
 * 声明定义：
 *    声明语法：
 *        数据类型[]  变量名; // java推荐
 *        变量名= 初始值;
 *        
 *        或者：
 *        数据类型  变量名[]; // c语言习惯
 *        
 *    初始化：
 *        申请内存：
 *           变量名 = new 数据类型[数组长度]; 
 *        申请内存并赋值：
 *           变量名 = new 数据类型[]{数值0,数值1,数值n};  
 *           注意：[]中不需要写数组长度，数据的长度由{}中元素的个数决定；
 *        声明并赋值：
 *           数据类型[]  变量名 = {数值0,数值1,数值n};
 *           注意：这种方式声明和赋值不能分开写；      
 * 解析：    
 *     一个数组中所有的元素类型相同；
 *     数组在内存中是连续存储的；
 *     
 *     数组一旦分配内存之后，大小不能再变；
 *     
 *     数组中的一个数据单位叫做数组的一个元素；
 *     数组中存储的所有的数据的总数就是数组的长度；
 *     数组的元素有下标，下标从0开始； 
 *     通过下标可以获取该下标所对应的数组元素的内容；
 *     通过形式  数组变量名[下标] 可以设置和获取对应下标的元素值；
 *     数组变量名指向数组在内存中的入口地址，数组变量名相当于数组入口地址，小标就是针对入口地址的偏移量；
 *     如果访问数组中不存的下标，则会出现数组越界问题；  
 *     一般使用new关键字对数组进行内存分配；
 *     数组的长度可以通过 数组名.length 获取；数组名.length-1 是数组的最大的下标；
 *     
 *     数组在申请完（new）内存空间之后，会自动赋值默认值。
 *     所有数组申请完内存（new）之后不需要初始化赋值，可以直接使用默认值,
 *     其实申请内存的过程也就是初始化赋值的过程；
 *     默认值：
 *        char  byte  short int long  float   double   boolean  对象类型
 *         '\0'   0     0    0   0      0.0f     0.0    false     null
 *         
 * 
 * 
 * 
 */


public class TestCh4 {

	public static void main(String[] args) {
		test013();

	}
	/**
	 * 数组的概念
	 */
	private static void test013() {
		// 数组的声明
		int[] arrVal01;
		// 使用new分配内存
		// 表示向系统申请了长度为4的用于储存int类型的一块连续的存储空间
		arrVal01 = new int[40]; // []中的4是数据的存储总量，也就是数组的长度
		// 使用for循环进行数组元素的初始赋值为1
		for(int i = 0;i<arrVal01.length;i++) {
			arrVal01[i] = 1;
		}		
		
		// 数组的遍历输出
		for (int j = 0; j <= arrVal01.length - 1; j++) {
			// arrVal01[0] = 0
			System.out.println("arrVal01[" + j + "]=" + arrVal01[j]);
		}
		
		System.out.println("=======增强型的for循环遍历数组=========");
		// 作为了解内容
		for (int eachVal : arrVal01) {
			System.out.println("  "+eachVal);
		}
	}
	
	/**
	 * 数组的概念
	 */
	private static void test012() {
		// 数组的声明和赋值必须写在一起
		int[] arrVal01 = {1,2,4,6,7,8}; // 数组的长度由{}中元素的个数决定;
		// 使用new分配内存
		// 表示向系统申请了长度为4的用于储存int类型的一块连续的存储空间
		// 修改下标为1的元素的值
		arrVal01[1] = 4;
		// 数组的遍历
		for (int i = 0; i < arrVal01.length; i++) {
			// arrVal01[0] = 0
			System.out.println("arrVal01[" + i + "]=" + arrVal01[i]);
		}
	}
	/**
	 * 数组的概念
	 */
	private static void test011() {
		// 数组的声明
		int[] arrVal01;
		// 使用new分配内存
		// 表示向系统申请了长度为4的用于储存int类型的一块连续的存储空间
		arrVal01 = new int[] {1,2,4,6,7,8}; // 数组的长度由{}中元素的个数决定
		// 修改下标为1的元素的值
		arrVal01[1] = 4;
		// 数组的遍历
		for (int i = 0; i < arrVal01.length; i++) {
			// arrVal01[0] = 0
			System.out.println("arrVal01[" + i + "]=" + arrVal01[i]);
		}
	}
	/**
	 * 数组的概念
	 */
	private static void test01() {
		// 数组的声明
		int[] arrVal01;
		// 使用new分配内存
		// 表示向系统申请了长度为4的用于储存int类型的一块连续的存储空间
		arrVal01 = new int[4]; // []中的4是数据的存储总量，也就是数组的长度
		// 修改下标为1的元素的值
		arrVal01[1] = 4;
		// 基本类型的局部变量使用之前需要进行初始化赋值
		int age = 0;
		arrVal01[2] = age;
		// 数组的遍历
		for (int i = 0; i <= arrVal01.length - 1; i++) {
			// arrVal01[0] = 0
			System.out.println("arrVal01[" + i + "]=" + arrVal01[i]);
		}
	}

}
